/**
 * 
 */
package com.autosalon.ui.spravaPujcek.action;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.autosalon.DAO.DaoFactory;
import com.autosalon.model.Pujcka;
import com.autosalon.ui.spravaPujcek.SpravaPujcek;
import com.autosalon.ui.spravaPujcek.state.SpravaPujcekStateHolder;
import com.vaadin.ui.Button.ClickEvent;

/**
 * @author Ragisel
 * 
 */
public class SavePujckaAction extends AbstractSpravaPujcekAction {

	private Pujcka pujcka;
	private int id;

	public SavePujckaAction(SpravaPujcek spravaPujcek) {
		super(spravaPujcek);
	}

	@Override
	public void buttonClick(ClickEvent event) {

		try {
			pujcka = new Pujcka();
			Object nazevBanky = spravaPujcek.getCbBanka().getValue();
			List<Object> banky = new ArrayList<Object>();
			banky = DaoFactory.getinstance().getBanka()
					.getAll(0, Integer.MAX_VALUE);
			Long id_banky = 0l;
			for (Object o : banky) {
				com.autosalon.model.Banka vybranaBanka = (com.autosalon.model.Banka) o;
				if (vybranaBanka.getNazevBanky().equals(nazevBanky))
					id_banky = vybranaBanka.getId();
			}
			pujcka.setBanka((com.autosalon.model.Banka) DaoFactory
					.getinstance().getBanka().getById(id_banky));
			Date konDatum = (Date) spravaPujcek.getPopupKonec().getValue();
			Date pocDatum = (Date) spravaPujcek.getPopupPocatek().getValue();

			pujcka.setKonDatum(new java.sql.Date(konDatum.getTime()));
			pujcka.setPocDatum(new java.sql.Date(pocDatum.getTime()));
			pujcka.setMesicniSplatka(Integer.parseInt(spravaPujcek
					.getTfMesicniSplatka().getValue().toString()));
			if (spravaPujcek.getId_pujcky() == null) {
				DaoFactory.getinstance().getPujcka().insert(pujcka);
				spravaPujcek.reinitNewPujckaForm();
			} else {
				pujcka.setId(spravaPujcek.getId_pujcky());
				DaoFactory.getinstance().getPujcka().update(pujcka);
				spravaPujcek.setId_pujcky(null);
				spravaPujcek.reinitNewPujckaForm();
			}
			spravaPujcek.naplnTabulkuObjednavky();
			id = spravaPujcek.getSwitcher().getMainWindow().getZakaznik()
					.getRole().getId().intValue();
			SpravaPujcekStateHolder
					.setState(SpravaPujcekStateHolder.VIEW_PUJCKY_STATE, id,
							spravaPujcek);

		} catch (Exception e) {
			// e.printStackTrace();
			id = 2;
			spravaPujcek.getWindow().showNotification(
					"Zadane vstupy nebyly korektni.");
			SpravaPujcekStateHolder.setState(
					SpravaPujcekStateHolder.NEW_PUJCKA_STATE, id, spravaPujcek);
		}

	}

}
